package tech.aistar.day06.extend;

/**
 * 本类用来演示: 子类Dog
 *
 * @author: success
 * @date: 2021/3/15 10:15 上午
 */
public class Dog extends Animal{
    //该子类的特性
    private double loyalty;

    public Dog(){
        //省略了super()
        super();//一定是首行
        System.out.println("Dog()空参构造被调用了...");
    }

    public Dog(String name,double loyalty){
        //如果手动提供了super调用构造的语法,那么就不会再由系统分配super()
        super(name);
        this.loyalty = loyalty;
        System.out.println("Dog(两参构造...)");
    }

    public void setLoyalty(double loyalty) {
        this.loyalty = loyalty;
    }

    public double getLoyalty() {
        return loyalty;
    }

    //子类可以重写父类中的方法
    @Override
    public void sleep() {
        System.out.println("狗在趴着睡觉...");
    }

    @Override
    public String toString() {
//        return getName()+"->"+"Dog{" +
//                "loyalty=" + loyalty +
//                '}';

        //super调用父类中的toString方法
        return super.toString()+"->"+"Dog{" +
                "loyalty=" + loyalty +
                '}';
    }

    //子类重写spark方法
    @Override
    public Dog spark() {
        System.out.println("Dog正在汪汪叫~~~");
        return null;
    }

    //定义一个属于该子类特有的方法
    public void watchDoor(){
        System.out.println("狗可以看门...");
    }

    public static void testSup(){
        System.out.println("static...Dog...");
    }
}
